/*
144. 二叉树前序遍历

非递归: 借用栈实现
头结点push
pop一个节点，打印，push(node.right), push(node.left),注意判空
 */

/**
 * @param {TreeNode} root
 * @return {number[]}
 */
var preorderTraversal = function (root) {
  if (!root) {
    return []
  }
  const stack = []
  const result = []
  stack.push(root)
  while (stack.length) {
    const node = stack.pop()
    if (node) {
      result.push(node.val) // 输出
      stack.push(node.right)
      stack.push(node.left)
    }
  }
  return result
}
